﻿using ConfExpert.Forms.Base;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevTeam;

using System;
using System.Drawing;
using System.Windows.Forms;

namespace ConfExpert.Forms.Depo.Aksesuar
{
    public partial class StokGiris : XForm
    {
        public StokGiris()
        {
            InitializeComponent();
        }

        private void StokGiris_Load(object sender, EventArgs e)
        {
            

            gvStokGiris.Init("GetAksPOforStock", 0);
            gvStokGiris.AddDetailGrid(gvRelatedPOLines, "AksesuarId");
            gvStokGiris.AddColumn("KalanAdet", typeof(int), "SiparisAdedi-Isnull(ToplamGelen,0)");

            gvStokGiris.YanYanaGetir("KalanAdet:GirenAdet");
            gvRelatedPOLines.MakeColumnInvisible("AksesuarId");

            gleVendor.Edit.Assign(RI(Rp.Vendor));

            gvStokGiris.FormatAsNumber(0, "SiparisAdedi", "ToplamGelen", "GirenAdet", "KalanAdet");
            gvRelatedPOLines.FormatAsNumber(0, "SiparisAdedi", "ToplamGelen", "KalanAdet");
            gvStokGiris.AddSummary("GirenAdet");            

            gleVendor.EditValueChanged += gleVendor_EditValueChanged;
            bbiGiris.ItemClick += bbiGiris_ItemClick;
            gvStokGiris.RowCellStyle += gvStokGiris_RowCellStyle;
        }

        void gvStokGiris_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle>-1)
            {
                switch (e.Column.FieldName) 
                {
                    case "KalanAdet":
                        e.Appearance.Font = new Font(AppearanceObject.DefaultFont, FontStyle.Bold);
                        return;
                }
            }
        }

        int VendorId;
        void bbiGiris_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvStokGiris.EndEditing();
            int EnteredRowCount = gvStokGiris.DataTable().Select("Isnull(GirenAdet,0)>0").Length;

            if (EnteredRowCount == 0 )
            {
                ShowInfoMessage("Lütfen adet girin");
                return;
            }

            string xml=gvStokGiris.SerializeChanges();

            StokGirisOlustur sgo = new StokGirisOlustur(VendorId, xml);
            DialogResult dr = sgo.ShowDialog();

            if (dr == DialogResult.OK)
                gvStokGiris.RefreshDataSource("GetAksPOforStock", VendorId);
        }

        void gleVendor_EditValueChanged(object sender, EventArgs e)
        {
            gvStokGiris.EndEditing();
            int EnteredRowCount=gvStokGiris.DataTable().Select("Isnull(GirenAdet,0)>0").Length;
            
            if (EnteredRowCount>0)
            {
                if (XtraMessageBox.Show("Stok girişi yapmak için girdiğiniz ADETLER var. Bu girişler kaydedilmeyecektir. Emin misiniz?", "Kritik!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                {
                    gleVendor.EditValueChanged -= gleVendor_EditValueChanged;
                    gleVendor.EditValue = VendorId;
                    gleVendor.EditValueChanged += gleVendor_EditValueChanged;
                    return;
                }
            }
            VendorId=gleVendor.EditValue.ToInt();
            gvStokGiris.RefreshDataSource("GetAksPOforStock", VendorId);
            gvStokGiris.BestFitColumns();
        }
    }
}